package br.com.registrofinancas.model;

import java.util.Date;

/**
 * Value Object para movimentação de valores.
 * Contém os parâmetros comuns a todas as movimentações.
 */
public class MovimentationVO {
	
	/**
	 * Enum utilizando para representação gráfica da movimentação.
	 */
	public enum MovimentationIcon {
		INCOME,
		OUTCOME,
		INCOME_OUTCOME
	}
	
	private String description;
	private Date operationDate;
	private MovimentationIcon icon;
	private Double value;
	private Integer id;
	private CategoryVO category;
	private Double latitude;
	private Double longitude;
	
	/**
	 * Retorna a descrição do evento.
	 * @return String
	 */
	public String getDescription() {
		return description;
	}
	/**
	 * Define a descrição do evento.
	 * @param description a descrição para o evento.
	 */
	public void setDescription(String description) {
		this.description = description;
	}
	
	/**
	 * Retorna a data em que a operação foi executada.
	 * @return Date
	 */
	public Date getOperationDate() {
		return operationDate;
	}
	/**
	 * Define a data em que a operação foi executada.
	 * @param operationDate a data da operação.
	 */
	public void setOperationDate(Date operationDate) {
		this.operationDate = operationDate;
	}
	
	/**
	 * Retorna o ícone que será utilizado para a movimentação
	 * @return MovimentationIcon
	 */
	public MovimentationIcon getIcon() {
		return icon;
	}
	/**
	 * Define o ícone que será utilizado para a movimentação
	 * @param icon o ícone para a operação
	 */
	public void setIcon(MovimentationIcon icon) {
		this.icon = icon;
	}
	
	/**
	 * Retorna o valor da movimentação.
	 * @return Double
	 */
	public Double getValue() {
		return value;
	}
	/**
	 * Define o valor da movimentação.
	 * @param value
	 */
	public void setValue(Double value) {
		this.value = value;
	}

	public Integer getId() {
		return id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}
	
	public CategoryVO getCategory() {
		return category;
	}
	
	public void setCategory(CategoryVO category) {
		this.category = category;
	}

	public Double getLatitude() {
		return latitude;
	}
	
	public void setLatitude(Double latitude) {
		this.latitude = latitude;
	}
	
	public Double getLongitude() {
		return longitude;
	}
	
	public void setLongitude(Double longitude) {
		this.longitude = longitude;
	}
	
	
	
}
